package com.power.sifa.correction.service;

import com.plf.common.domain.PageDataResponse;
import com.plf.core.base.model.Ha_depart;
import com.power.sifa.correction.model.Crc_person;
import com.power.sifa.correction.model.pageInfo.Crc_personPageInfo;
import com.power.sifa.correction.model.pojo.bo.Crc_departBO;
import com.power.sifa.statistics.model.vo.MonitoringVO;
import org.springframework.data.domain.Page;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 *  社区矫正人员信息业务层
 */
public interface Crc_personService {

    Integer getNextval();

    /**
     *  根据id获取社区矫正人员信息对象
     */
    Crc_person getById(Serializable id);

    /**
     *  根据id获取社区矫正人员信息对象
     */
    Crc_person findPersonById(String id);

    /**
     *  根据传入社区矫正人员信息对象进行新增或更新操作
     */
    void saveOrUpdate(Crc_person crc_person);

    /**
     *  根据id删除社区矫正人员信息
     */
    void removeById(Serializable id);

    /**
     *  根据传入条件查询社区矫正人员信息分页结果
     */
    Page<Crc_person> findAll(Crc_personPageInfo pageInfo);

    /**
     * 查询全部社区矫正人员信息
     */
    List<Crc_person> findAll();

     /**
     *  根据id批量删除社区矫正人员信息
     */
    void removeByIds(List<String> list);

     /**
     *  批量保存社区矫正人员信息
     */
    void saveAll(List<Crc_person> list);


    /**
     *  批量保存社区矫正人员信息
     */
    void batchSaveOrUpdate(List<Crc_person> list);

    /**
     *  社区矫正人员分页查询
     */
    PageDataResponse pageQuery(Crc_personPageInfo pageInfo);

    /**
     * 条件查询全部社矫人员数据
     * @param pageInfo
     * @return
     */
    List<Crc_person> queryAllList(Crc_personPageInfo pageInfo);

    /**
     * 条件查询全部社矫人员数据
     * @param cardno
     * @return
     */
    Crc_person findByCardNos(String cardno);

    /**
     * 传入的personId
     * @param personIds
     * @return
     */
    List<Crc_person> findByPersonIds(List<String> personIds);

    /**
     * 通过分组id查询对应的人员信息
     * @return
     */
    Map<String,List<Crc_person>> findPersonByGroupIds(List<String> groupIds);

    /**
     * 查询全部的司法所信息
     * @return
     */
    List<Ha_depart> findAllLawDeparts();


    /**
     * 查询社矫人与其司法所信息
     * @param id
     * @return
     */
    Crc_person queryById(String id);

    /**
     * 发送预警消息
     * @param perid
     * @param warnid
     * @param workid
     * @param type
     */
    String sendMessage(String perid, String warnid, String workid, Integer type);

    /**
     * 发送督办通知
     * @param warnid
     */
    void sendSupMessage(String warnid, String workid);

    /**
     * 查询有效社矫人员列表
     * @return
     */
    List<Crc_person> getList();

    /**
     * 查询对应人员涉及的司法所信息
     * @param personId 对应传入的社矫人员id
     * @return
     */
    List<Crc_departBO> findDepartByPerson(String personId);

    /**
     * 查询所有重点人员
     * @return
     */
    List<Crc_person> findAllFocus(List<String> f_deptid);


    /**
     * 查询对应人员涉及的司法所信息
     * @param personIds 对应传入的社矫人员id
     * @return
     */
    List<Crc_departBO> findDepartByPersons(List<String> personIds);

    /**
     * 查询重点布控人员列表
     * @param isFocus
     * @return
     */
    List<Crc_person> queryListByIsFocus(Integer isFocus);
}

